package com.yc.http.d0626;

import java.io.*;
import java.net.ServerSocket;
import java.net.Socket;
import java.nio.charset.StandardCharsets;

public class Tomcat {

    public static void main(String[] args) throws IOException {

        ServerSocket server = new ServerSocket(80);
        System.out.println("Tomcat服务器启动完成:80");


        while (true) {
            Socket socket = server.accept();
            new Thread() {
                public void run() {
                    try (
                            InputStream inputStream = socket.getInputStream();
                            OutputStream outputStream = socket.getOutputStream();
                    ) {
                        // 读取请求报文
                        HttpServletRequest request = new HttpServletRequest(inputStream);
                        String photoRoot = "D:\\Tomcat俄罗斯终结破解版\\webapps\\photo";
                        String filepath = photoRoot + request.getRequestURI();
                        String contentType = "Content-Type:text/html;charset=utf-8\n";
                        if (filepath.endsWith(".css")) {
                            contentType = "Content-Type:text/css;charset=utf-8\n";
                        } else if (filepath.endsWith(".js")) {
                            contentType = "Content-Type:application/x-javascript;charset=utf-8\n";
                        }

                        // 实现显示 404 页面显示
                        outputStream.write("HTTP/1.1 200 OK\n".getBytes(StandardCharsets.UTF_8));
                        outputStream.write(contentType.getBytes(StandardCharsets.UTF_8));
                        outputStream.write("\n".getBytes(StandardCharsets.UTF_8));

                        FileInputStream fos = new FileInputStream(filepath);
                        byte[] bytes = new byte[1024];
                        int count;
                        while ((count = fos.read(bytes)) > -1) {
                            outputStream.write(bytes, 0, count);
                        }
                       /* outputStream.write("HTTP/1.1 200 OK\n".getBytes(StandardCharsets.UTF_8));
                        outputStream.write("Content-Type:text/html;charset=utf-8\n".getBytes(StandardCharsets.UTF_8));
                        outputStream.write("\n".getBytes(StandardCharsets.UTF_8));
                        outputStream.write("<h1>hello 中国</h1>".getBytes(StandardCharsets.UTF_8));*/
                    } catch (IOException e) {
                        e.printStackTrace();
                    }
                }
            }.start();
        }

        /**
         * HTTP 请求报文格式
         * 1. 请求头
         *      请求头行:   请求类型(空格)资源路径(空格)协议版本
         *      键: 值   N个参数
         *      空白行
         * 2. 请求体
         *      POST 请求才会产生请求体
         *         1. 表单提交
         *         2. AJAX.post 方法
         *
         *
         * 响应报文格式
         *  1. 响应头
         *      响应投行: 协议(空格)结果码(空格)结果码说明
         *      键: 值   N个参数
         *      空行
         *  2. 相应体
         *
         *
         *  根据请求内容给与对应的响应 : Html js ,css jpg
         *      1. 解析请求报文
         *      2. 分析内容, 找到指定的文件
         *      3. 根据请求, 定制响应报文
         *      4. 传回响应报文
         *
         *
         */

    }
}
